package com.mach.platform.service.js.iot;

import com.mach.platform.constants.CommonConstants;
import org.apache.ibatis.annotations.Case;
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;

/**
 * @DESCRIPTION: 供JS调用的时间工具方法
 * @Info Administrator create on 2019/4/11 0011 19:01
 */
public class JsTimeTools {

    /**
     * 把字符串时间，转为DateTime实例：datetime实例可使用一切可用的时间操作方法
     *
     * @param time
     * @return
     */
    public DateTime parseStringToDateTime(String time) {
        return DateTime.parse(time, DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss"));
    }

    /**
     * 把字符串时间，转为DateTime实例：datetime实例可使用一切可用的时间操作方法
     *
     * @param time
     * @return
     */
    public DateTime parseStringToDateTimeViaPattern(String time) {

        String pattern = "";

        switch (time.length()) {
            case 4:
                pattern = "yyyy";
                break;
            case 7:
                pattern = "yyyy-MM";
                break;
            case 10:
                pattern = "yyyy-MM-dd";
                break;
            case 13:
                pattern = "yyyy-MM-dd HH";
                break;
            default:
                break;
        }

        return DateTime.parse(time, DateTimeFormat.forPattern(pattern));
    }

    /**
     * 获取当前 时间的 DateTime实例
     *
     * @return
     */
    public DateTime getCurrentDateTime() {
        return DateTime.now();
    }

    /**
     * 获取当前时间： yyyy-MM-dd HH:mm:ss
     *
     * @return String
     */
    public String getYMDHMS() {
        return DateTime.now().toString(CommonConstants.DATE_STYLE_YMDHMS);
    }

    /**
     * 获取 当前时间：yyyy-MM-dd
     *
     * @return String
     */
    public String getYMD() {
        return DateTime.now().toString(CommonConstants.DATE_STYLE_YMD);
    }

    /**
     * 获取 当前时间：yyyy-MM
     *
     * @return String
     */
    public String getYM() {
        return DateTime.now().toString(CommonConstants.DATE_STYLE_YM);
    }

    /**
     * 获取 传入时间：yyyy-MM-dd
     *
     * @return String
     */
    public String turnYMD(String time) {
        DateTime dateTime = DateTime.parse(time, DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss"));
        return dateTime.toString(CommonConstants.DATE_STYLE_YMD);
    }

    /**
     * 获取 传入时间：yyyy-MM
     *
     * @return String
     */
    public String turnYM(String time) {
        DateTime dateTime = DateTime.parse(time, DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss"));
        return dateTime.toString(CommonConstants.DATE_STYLE_YM);
    }

    /**
     * 获取 传入时间：yyyy
     *
     * @return String
     */
    public String turnY(String time) {
        DateTime dateTime = DateTime.parse(time, DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss"));
        return dateTime.toString(CommonConstants.DATE_STYLE_Y);
    }

    /**
     * 传时间，获取对应的sql时间格式
     *
     * @param time
     * @return
     */
    public String turnTimeStringToPattern(String time) {

        String result;

        switch (time.trim().length()) {

            case 4:
                result = "%Y";
                break;
            case 7:
                result = "%Y-%m";
                break;
            case 10:
                result = "%Y-%m-%d";
                break;
            case 13:
                result = "%Y-%m-%d %H";
                break;
            case 16:
                result = "%Y-%m-%d %H:%i";
                break;

            default:
                // 19 年月日时分秒
                result = "%Y-%m-%d %H:%i:%s";
                break;
        }
        return result;
    }

    /**
     * 传时间，获取对应的sql时间格式
     *
     * @param time
     * @param pattern
     * @return
     */
    public String getTimeByTimeAndPattern(String time, String pattern) {

        String result;

        switch (pattern.trim().length()) {

            case 4:
                result = time.substring(0,3);
                break;
            case 7:
                result = time.substring(0,7);
                break;
            case 10:
                result = "%Y-%m-%d";
                break;
            case 13:
                result = "%Y-%m-%d %H";
                break;
            case 16:
                result = "%Y-%m-%d %H:%i";
                break;

            default:
                // 19 年月日时分秒
                result = "%Y-%m-%d %H:%i:%s";
                break;
        }
        return result;
    }


}
